JavaScript λͺ¨λ ν« μ λ°μ΄νΈμ 볡μ‘μ±μ νꡬνκ³ , μ λ°μ΄νΈ μ²λ¦¬ μλμ μν₯μ λ―ΈμΉλ μμΈμ μ¬μΈ΅ λΆμνλ©°, λ μνν κ°λ° κ²½νμ μν μ€μ©μ μΈ μ΅μ ν κΈ°μ μ λ°κ²¬νμμμ€.
JavaScript λͺ¨λ ν« μ λ°μ΄νΈ μ±λ₯: μ λ°μ΄νΈ μ²λ¦¬ μλ μ΄ν΄ λ° μ΅μ ν
JavaScript λͺ¨λ ν« μ λ°μ΄νΈ(HMR, Hot Module ReplacementλΌκ³ λ ν¨)λ Webpack, Rollup λ° Parcelκ³Ό κ°μ μ΅μ λ²λ€λ¬μμ μ 곡νλ κ°λ ₯ν κΈ°λ₯μ λλ€. μ΄λ₯Ό ν΅ν΄ κ°λ°μλ μ 체 νμ΄μ§λ₯Ό λ€μ λ‘λνμ§ μκ³ λ μ€ν μ€μΈ μ ν리μΌμ΄μ μμ λͺ¨λμ μ λ°μ΄νΈν μ μμ΅λλ€. μ΄λ μ ν리μΌμ΄μ μνλ₯Ό μ μ§νκ³ λ°λ³΅ μκ°μ μ€μ¬ κ°λ° κ²½νμ ν¬κ² ν₯μμν΅λλ€. κ·Έλ¬λ HMRμ μ±λ₯, νΉν μ λ°μ΄νΈκ° μ²λ¦¬λλ μλλ μ¬λ¬ μμΈμ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€. μ΄ κΈ°μ¬μμλ JavaScript λͺ¨λ ν« μ λ°μ΄νΈμ 볡μ‘μ±μ μμΈν μ΄ν΄λ³΄κ³ μ λ°μ΄νΈ μ²λ¦¬ μλμ μν₯μ λ―ΈμΉλ μμΈμ νꡬνλ©° μ΅μ νλ₯Ό μν μ€μ©μ μΈ κΈ°μ μ μ 곡ν©λλ€.
JavaScript λͺ¨λ ν« μ λ°μ΄νΈ(HMR)λ 무μμ λκΉ?
κΈ°μ‘΄ κ°λ° μν¬νλ‘μ°μμλ JavaScript λͺ¨λμ λ³κ²½νλ €λ©΄ μ’ μ’ λΈλΌμ°μ λ₯Ό μμ ν μλ‘ κ³ μ³μΌ ν©λλ€. μ΄ μλ‘ κ³ μΉ¨μ νμ¬ μ ν리μΌμ΄μ μνλ₯Ό μ§μ°κ³ κ°λ°μκ° ν μ€νΈ λλ λλ²κΉ νλ μ§μ μΌλ‘ λ€μ μ΄λν΄μΌ ν©λλ€. HMRμ λ³κ²½λ λͺ¨λκ³Ό ν΄λΉ μ’ μμ±λ§ μ§λ₯μ μΌλ‘ μ λ°μ΄νΈνμ¬ μ΄λ¬ν μ€λ¨μ μ κ±°νκ³ μ ν리μΌμ΄μ μ μνλ₯Ό μ μ§ν©λλ€.
μ¬λ¬ νλκ° μ±μμ§ λ³΅μ‘ν μμμ μμ νκ³ μλ€κ³ μμν΄ λ³΄μμμ€. HMRμ΄ μμΌλ©΄ λ²νΌμ μ€νμΌμ μ‘°μ ν λλ§λ€ λͺ¨λ μμ λ°μ΄ν°λ₯Ό λ€μ μ λ ₯ν΄μΌ ν©λλ€. HMRμ μ¬μ©νλ©΄ μμ μνμ μν₯μ μ£Όμ§ μκ³ λ²νΌ μ€νμΌμ΄ μ¦μ μ λ°μ΄νΈλ©λλ€. μ΄λ¬ν μμ κ°μ μ¬νμ΄ κ°λ° μΈμ κ³Όμ μμ μλΉν μκ°μ μ μ½ν μ μμΌλ©° νΉν ν¬κ³ 볡μ‘ν μ ν리μΌμ΄μ μ κ²½μ° λμ± κ·Έλ μ΅λλ€.
HMRμ μ΄μ
- λ λΉ λ₯Έ κ°λ° μ£ΌκΈ°: HMRμ λΈλΌμ°μ μ λ³κ²½ μ¬νμ΄ λ°μλλ λ° κ±Έλ¦¬λ μκ°μ νκΈ°μ μΌλ‘ μ€μ¬ λ λΉ λ₯Έ λ°λ³΅κ³Ό λ λΉ λ₯Έ κ°λ° μ£ΌκΈ°λ₯Ό μ 곡ν©λλ€.
- μ μ§λ μ ν리μΌμ΄μ μν: νμν λͺ¨λλ§ μ λ°μ΄νΈν¨μΌλ‘μ¨ HMRμ μ ν리μΌμ΄μ μ νμ¬ μνλ₯Ό μ μ§νλ―λ‘ κ° λ³κ²½ ν ν μ€νΈ λλ λλ²κΉ νκ²½μ μλμΌλ‘ λ€μ λ§λ€ νμκ° μμ΅λλ€.
- ν₯μλ λλ²κΉ κ²½ν: HMRμ μ ν리μΌμ΄μ 컨ν μ€νΈλ₯Ό μμ§ μκ³ λ¬Έμ λ₯Ό μΌμΌν€λ μ νν λͺ¨λμ μ νν μ°ΎμλΌ μ μλλ‘ νμ¬ λλ²κΉ μ λ¨μνν©λλ€.
- ν₯μλ κ°λ°μ μμ°μ±: λ λΉ λ₯Έ μ£ΌκΈ°μ μ μ§λ μνμ κ²°ν©λ μ΄μ μ λ³΄λ€ ν¨μ¨μ μ΄κ³ μμ°μ μΈ κ°λ° μν¬νλ‘μ°μ κΈ°μ¬ν©λλ€.
HMR μ λ°μ΄νΈ μ²λ¦¬ μλμ μν₯μ λ―ΈμΉλ μμΈ
HMRμ μλ§μ μ΄μ μ μ 곡νμ§λ§ μ±λ₯μ μ¬λ¬ μμΈμ μν₯μ λ°μ μ μμ΅λλ€. μ΄λ¬ν μμΈμ μ΄ν΄νλ κ²μ μ λ°μ΄νΈ μ²λ¦¬ μλλ₯Ό μ΅μ ννκ³ μνν κ°λ° κ²½νμ 보μ₯νλ λ° λ§€μ° μ€μν©λλ€.
1. μ ν리μΌμ΄μ ν¬κΈ° λ° λ³΅μ‘μ±
μ ν리μΌμ΄μ μ ν¬κΈ°μ 볡μ‘μ±μ HMR μ±λ₯μ ν° μν₯μ λ―ΈμΉ©λλ€. λͺ¨λμ΄ λ§κ³ μ’ μμ±μ΄ 볡μ‘ν λκ·λͺ¨ μ ν리μΌμ΄μ μ μν₯μ λ°λ κ΅¬μ± μμλ₯Ό μλ³νκ³ μ λ°μ΄νΈνλ λ° λ λ§μ μ²λ¦¬ μκ°μ΄ νμν©λλ€.
μ: κ°λ¨ν "Hello, World!" μ ν리μΌμ΄μ μ κ±°μ μ¦μ μ λ°μ΄νΈλ©λλ€. μλ°± κ°μ κ΅¬μ± μμμ λΌμ΄λΈλ¬λ¦¬κ° μλ 볡μ‘ν μ μ μκ±°λ νλ«νΌμ ν¨μ¬ λ μ€λ 걸립λλ€.
2. λͺ¨λ κ·Έλν ν¬κΈ°
λͺ¨λ κ·Έλνλ μ ν리μΌμ΄μ μ λͺ¨λ κ° μ’ μμ±μ λνλ λλ€. ν¬κ³ 볡μ‘ν λͺ¨λ κ·Έλνλ HMR μ€μ μν₯μ λ°λ λͺ¨λμ μννκ³ μ λ°μ΄νΈνλ λ° νμν μκ°μ λ립λλ€.
κ³ λ € μ¬ν:
- μν μ’ μμ±: μν μ’ μμ±μ λͺ¨λ κ·Έλνμμ 볡μ‘ν 루νλ₯Ό μμ±νμ¬ μ λ°μ΄νΈ νλ‘μΈμ€ μλλ₯Ό λ¦μΆ μ μμ΅λλ€.
- κΉμ΄ μ€μ²©λ μ’ μμ±: μ’ μμ± νΈλ¦¬ λ΄μ κΉμ΄ μ€μ²©λ λͺ¨λμ μ λ°μ΄νΈνλ λ° λ μ€λ 걸릴 μ μμ΅λλ€.
3. λ²λ€λ¬ ꡬμ±
λ²λ€λ¬(Webpack, Rollup, Parcel)μ ꡬμ±μ HMR μ±λ₯μ μ€μν μν μ ν©λλ€. μλͺ»λμκ±°λ λΉν¨μ¨μ μΈ κ΅¬μ± μ€μ μ μ λ°μ΄νΈ μ²λ¦¬ μκ°μ λ¦μΆ μ μμ΅λλ€.
μ£Όμ κ΅¬μ± μΈ‘λ©΄:
- μμ€ λ§΅: μμΈν μμ€ λ§΅μ μμ±νλ©΄ νΉν λκ·λͺ¨ νλ‘μ νΈμ κ²½μ° HMR μλκ° λλ €μ§ μ μμ΅λλ€.
- μ½λ λΆν : νλ‘λμ μλ μ μ©νμ§λ§ κ°λ° μ€μ κ³Όλν μ½λ λΆν μ λͺ¨λ κ·Έλνμ 볡μ‘μ±μ μ¦κ°μν€κ³ HMR μ±λ₯μ μν₯μ λ―ΈμΉ μ μμ΅λλ€.
- λ‘λ λ° νλ¬κ·ΈμΈ: λΉν¨μ¨μ μΈ λ‘λ λλ νλ¬κ·ΈμΈμ μ λ°μ΄νΈ νλ‘μΈμ€μ μ€λ²ν€λλ₯Ό μΆκ°ν μ μμ΅λλ€.
4. νμΌ μμ€ν I/O
HMRμ μ λ°μ΄νΈ νλ‘μΈμ€ μ€μ νμΌμ μ½κ³ μ°λ μμ μ ν¬ν¨ν©λλ€. λλ¦° νμΌ μμ€ν I/Oλ νΉν λ§μ μμ λͺ¨λ λλ λλ¦° μ μ₯ μ₯μΉλ₯Ό μ²λ¦¬ν λ λ³λͺ© νμμ΄ λ μ μμ΅λλ€.
νλμ¨μ΄μ μν₯:
- SSD λ HDD: μ리λ μ€ν μ΄νΈ λλΌμ΄λΈ(SSD)λ κΈ°μ‘΄ νλ λμ€ν¬ λλΌμ΄λΈ(HDD)μ λΉν΄ ν¨μ¬ λΉ λ₯Έ I/O μλλ₯Ό μ 곡νμ¬ HMR μ λ°μ΄νΈ μλκ° λ λΉ¨λΌμ§λλ€.
- CPU μ±λ₯: λ λΉ λ₯Έ CPUλ νμΌ λ³κ²½ μ¬νμ λ³΄λ€ ν¨μ¨μ μΌλ‘ μ²λ¦¬νλ λ° λμμ΄ λ μ μμ΅λλ€.
5. μ λ°μ΄νΈ 볡μ‘μ±
μ λ°μ΄νΈλλ λͺ¨λμ λν λ³κ²½ μ¬νμ 볡μ‘μ±μ μ²λ¦¬ μκ°μ μ§μ μ μΈ μν₯μ λ―ΈμΉ©λλ€. λ¬Έμμ΄ λ¦¬ν°λ΄ μμ κ³Ό κ°μ κ°λ¨ν λ³κ²½ μ¬νμ λκ·λͺ¨ 리ν©ν°λ§ λλ μ’ μμ± μ λ°μ΄νΈμ κ΄λ ¨λ 볡μ‘ν λ³κ²½ μ¬νλ³΄λ€ λ λΉ λ₯΄κ² μ²λ¦¬λ©λλ€.
λ³κ²½ μ ν:
- μμ νΈμ§: κΈ°μ‘΄ μ½λμ λν μμ λ³κ²½ μ¬νμ μΌλ°μ μΌλ‘ λΉ λ₯΄κ² μ²λ¦¬λ©λλ€.
- μ’ μμ± μ λ°μ΄νΈ: μ’ μμ±μ μΆκ°νκ±°λ μ κ±°νλ €λ©΄ λ²λ€λ¬κ° λͺ¨λ κ·Έλνλ₯Ό λ€μ νκ°ν΄μΌ νλ―λ‘ μ λ°μ΄νΈ μλκ° λλ €μ§ μ μμ΅λλ€.
- μ½λ 리ν©ν°λ§: λκ·λͺ¨ μ½λ 리ν©ν°λ§μ HMR μ±λ₯μ ν° μν₯μ λ―ΈμΉ μ μμ΅λλ€.
6. μ¬μ© κ°λ₯ν μμ€ν 리μμ€
CPU λ° λ©λͺ¨λ¦¬μ κ°μ λΆμΆ©λΆν μμ€ν 리μμ€λ HMR μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. 리μμ€κ° μ νλλ©΄ λ²λ€λ¬κ° μ λ°μ΄νΈλ₯Ό ν¨μ¨μ μΌλ‘ μ²λ¦¬νλ λ° μ΄λ €μμ κ²ͺμ΄ μ²λ¦¬ μκ°μ΄ λλ €μ§ μ μμ΅λλ€.
리μμ€ μ¬μ©λ λͺ¨λν°λ§: HMR μ λ°μ΄νΈ μ€μ μμ€ν λͺ¨λν°λ§ λꡬλ₯Ό μ¬μ©νμ¬ CPU λ° λ©λͺ¨λ¦¬ μ¬μ©λμ μΆμ ν©λλ€. 리μμ€κ° μ§μμ μΌλ‘ νκ³μ κ°κΉμμ§λ©΄ νλμ¨μ΄λ₯Ό μ κ·Έλ μ΄λνκ±°λ κ°λ° νκ²½μ μ΅μ ννλ κ²μ κ³ λ €νμμμ€.
HMR μ λ°μ΄νΈ μ²λ¦¬ μλ μ΅μ νλ₯Ό μν κΈ°μ
HMR μ λ°μ΄νΈ μ²λ¦¬ μλλ₯Ό μ΅μ ννκ³ μ λ°μ μΈ κ°λ° κ²½νμ κ°μ νκΈ° μν΄ μ¬λ¬ κ°μ§ κΈ°μ μ μ¬μ©ν μ μμ΅λλ€. μ΄λ¬ν κΈ°μ μ λλ¦° μ λ°μ΄νΈμ κΈ°μ¬νλ μμΈμ μ΅μννκ³ μ λ°μ΄νΈ νλ‘μΈμ€λ₯Ό κ°μννλ λ° μ€μ μ λ‘λλ€.
1. λ²λ€λ¬ κ΅¬μ± μ΅μ ν
λ²λ€λ¬ ꡬμ±μ μ΅μ ννλ κ²μ HMR μ±λ₯μ κ°μ νλ λ° λ§€μ° μ€μν©λλ€. μ¬κΈ°μλ μ€λ²ν€λλ₯Ό μ€μ΄κ³ ν¨μ¨μ±μ κ°μ νκΈ° μν΄ λ€μν μ€μ μ λ―ΈμΈ μ‘°μ νλ κ²μ΄ ν¬ν¨λ©λλ€.
a. μμ€ λ§΅ μμ± μ΅μν
μμ€ λ§΅μ μ»΄νμΌλ μ½λμ μλ μμ€ μ½λ κ°μ λ§€νμ μ 곡νμ¬ λλ²κΉ μ λ μ½κ² λ§λλλ€. κ·Έλ¬λ μμΈν μμ€ λ§΅μ μμ±νλ κ²μ νΉν λκ·λͺ¨ νλ‘μ νΈμ κ²½μ° κ³μ° λΉμ©μ΄ λ§μ΄ λ€ μ μμ΅λλ€. κ°λ° μ€μλ λ μμΈν μμ€ λ§΅ μ΅μ μ μ¬μ©νλ κ²μ κ³ λ €νμμμ€.
Webpack μμ :
`devtool: 'source-map'` λμ `devtool: 'eval-cheap-module-source-map'` λλ `devtool: 'eval'`μ μ¬μ©ν΄ 보μμμ€. νΉμ μ΅μ μ λλ²κΉ μꡬ μ¬νμ λ°λΌ λ€λ¦ λλ€.
b. μ½λ λΆν λ―ΈμΈ μ‘°μ
μ½λ λΆν μ νλ‘λμ λΉλλ₯Ό μ΅μ ννλ λ° νμμ μ΄μ§λ§ κ°λ° μ€μ κ³Όλν μ½λ λΆν μ λͺ¨λ κ·Έλνμ 볡μ‘μ±μ μ¦κ°μν€κ³ HMR μ±λ₯μ λΆμ μ μΈ μν₯μ λ―ΈμΉ μ μμ΅λλ€. κ°λ° μ€μλ μ½λ λΆν μ λΉνμ±ννκ±°λ μ€μ΄λ κ²μ κ³ λ €νμμμ€.
c. λ‘λ λ° νλ¬κ·ΈμΈ μ΅μ ν
ν¨μ¨μ μΈ λ‘λμ νλ¬κ·ΈμΈμ μ¬μ©νκ³ μλμ§ νμΈνμμμ€. λΉλ νλ‘μΈμ€λ₯Ό νλ‘νμΌλ§νμ¬ λΉλ μκ°μ ν¬κ² κΈ°μ¬νλ λ‘λ λλ νλ¬κ·ΈμΈμ μλ³ν©λλ€. λΉν¨μ¨μ μΈ λ‘λ λλ νλ¬κ·ΈμΈμ κ΅μ²΄νκ±°λ μ΅μ ννλ κ²μ κ³ λ €νμμμ€.
d. μΊμλ₯Ό ν¨κ³Όμ μΌλ‘ μ¬μ©
λλΆλΆμ λ²λ€λ¬λ νμ λΉλ μλλ₯Ό λμ΄κΈ° μν΄ μΊμ± λ©μ»€λμ¦μ μ 곡ν©λλ€. μ΄λ¬ν μΊμ± κΈ°λ₯μ ν¨κ³Όμ μΌλ‘ νμ©νκ³ μλμ§ νμΈνμμμ€. λΆνμν μ¬μ»΄νμΌμ λ°©μ§νκΈ° μν΄ λΉλ μν°ν©νΈμ μ’ μμ±μ μΊμνλλ‘ λ²λ€λ¬λ₯Ό ꡬμ±νμμμ€.
2. λͺ¨λ κ·Έλν ν¬κΈ° μ€μ΄κΈ°
λͺ¨λ κ·Έλνμ ν¬κΈ°μ 볡μ‘μ±μ μ€μ΄λ©΄ HMR μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€. μ¬κΈ°μλ μν μ’ μμ± ν΄κ²°, κΉμ΄ μ€μ²©λ μ’ μμ± μ΅μν λ° λΆνμν μ’ μμ± μ κ±°κ° ν¬ν¨λ©λλ€.
a. μν μ’ μμ± μ κ±°
μν μ’ μμ±μ λͺ¨λ κ·Έλνμμ 볡μ‘ν 루νλ₯Ό μμ±νμ¬ μ λ°μ΄νΈ νλ‘μΈμ€ μλλ₯Ό λ¦μΆ μ μμ΅λλ€. μ ν리μΌμ΄μ μμ μν μ’ μμ±μ μλ³νκ³ μ κ±°νμμμ€.
μν μ’ μμ± κ°μ§λ₯Ό μν λꡬ:
- `madge`: μν μ’ μμ±μ ν¬ν¨νμ¬ λͺ¨λ μ’ μμ±μ λΆμνκ³ μκ°ννλ λ° λ리 μ¬μ©λλ λꡬμ λλ€.
- Webpack Circular Dependency Plugin: λΉλ νλ‘μΈμ€ μ€μ μν μ’ μμ±μ κ°μ§νλ Webpack νλ¬κ·ΈμΈμ λλ€.
b. κΉμ΄ μ€μ²©λ μ’ μμ± μ΅μν
μ’ μμ± νΈλ¦¬ λ΄μ κΉμ΄ μ€μ²©λ λͺ¨λμ μ λ°μ΄νΈνλ λ° λ μ€λ 걸릴 μ μμ΅λλ€. μ’ μμ± νΈλ¦¬μ κΉμ΄λ₯Ό μ€μ΄λλ‘ μ½λλ₯Ό μ¬κ΅¬μ±νμμμ€.
c. λΆνμν μ’ μμ± μ κ±°
νλ‘μ νΈμμ λΆνμν μ’ μμ±μ μλ³νκ³ μ κ±°νμμμ€. μ’ μμ±μ λͺ¨λ κ·Έλνμ ν¬κΈ°μ 볡μ‘μ±μ μ¦κ°μμΌ HMR μ±λ₯μ μν₯μ λ―ΈμΉ©λλ€.
3. νμΌ μμ€ν I/O μ΅μ ν
νμΌ μμ€ν I/Oλ₯Ό μ΅μ ννλ©΄ νΉν λ§μ μμ λͺ¨λ λλ λλ¦° μ μ₯ μ₯μΉλ₯Ό μ²λ¦¬ν λ HMR μ±λ₯μ ν¬κ² ν₯μμν¬ μ μμ΅λλ€.
a. SSD μ¬μ©
κΈ°μ‘΄ νλ λμ€ν¬ λλΌμ΄λΈ(HDD)λ₯Ό μ¬μ©νλ κ²½μ° μ리λ μ€ν μ΄νΈ λλΌμ΄λΈ(SSD)λ‘ μ κ·Έλ μ΄λνλ κ²μ κ³ λ €νμμμ€. SSDλ ν¨μ¬ λΉ λ₯Έ I/O μλλ₯Ό μ 곡νμ¬ HMR μ λ°μ΄νΈ μλκ° λ λΉ¨λΌμ§λλ€.
b. κ°μμμ λΆνμν νμΌ μ μΈ
λΆνμν νμΌ λ° λλ ν 리λ₯Ό κ°μ νλ‘μΈμ€μμ μ μΈνλλ‘ λ²λ€λ¬λ₯Ό ꡬμ±νμμμ€. μ΄λ κ² νλ©΄ νμΌ μμ€ν νλλμ΄ μ€μ΄λ€κ³ HMR μ±λ₯μ΄ ν₯μλ©λλ€. μλ₯Ό λ€μ΄ node_modules λλ μμ λΉλ λλ ν 리λ₯Ό μ μΈνμμμ€.
c. RAM λμ€ν¬ μ¬μ© κ³ λ €
μ΅κ³ μ μ±λ₯μ μν΄ RAM λμ€ν¬λ₯Ό μ¬μ©νμ¬ νλ‘μ νΈ νμΌμ μ μ₯νλ κ²μ κ³ λ €νμμμ€. RAM λμ€ν¬λ λ©λͺ¨λ¦¬μ νμΌμ μ μ₯νμ¬ SSDλ³΄λ€ ν¨μ¬ λΉ λ₯Έ I/O μλλ₯Ό μ 곡ν©λλ€. κ·Έλ¬λ RAM λμ€ν¬μ μ μ₯λ λ°μ΄ν°λ μμ€ν μ΄ μ’ λ£λκ±°λ λ€μ μμλ λ μμ€λλ€λ μ μ μ μνμμμ€.
4. HMRμ λ§κ² μ½λ μ΅μ ν
HMR μΉνμ μΈ μ½λλ₯Ό μμ±νλ©΄ μ λ°μ΄νΈ μ²λ¦¬ μλλ₯Ό κ°μ ν μ μμ΅λλ€. μ¬κΈ°μλ μ λ°μ΄νΈ μ€μ λ€μ νκ°ν΄μΌ νλ μ½λμ μμ μ΅μννλ λ°©μμΌλ‘ μ½λλ₯Ό ꡬμ±νλ κ²μ΄ ν¬ν¨λ©λλ€.
a. λͺ¨λ λ체 κ²½κ³ μ¬μ©
λͺ¨λ λ체 κ²½κ³λ HMR μ λ°μ΄νΈμ λ²μλ₯Ό μ μν©λλ€. λͺ¨λ λ체 κ²½κ³λ₯Ό μ λ΅μ μΌλ‘ λ°°μΉνλ©΄ λͺ¨λμ΄ λ³κ²½λ λ λ€μ νκ°ν΄μΌ νλ μ½λμ μμ μ νν μ μμ΅λλ€.
b. κ΅¬μ± μμ λΆλ¦¬
λΆλ¦¬λ κ΅¬μ± μμλ 격리λ μνλ‘ μ λ°μ΄νΈνκΈ°κ° λ μ¬μ λ³κ²½ μ¬νμ΄ μ ν리μΌμ΄μ μ λ€λ₯Έ λΆλΆμ λ―ΈμΉλ μν₯μ μ€μ λλ€. κ΅¬μ± μμκ° λμ¨νκ² κ²°ν©λκ³ λ 립μ μ΄λλ‘ μ€κ³νμμμ€.
5. HMR API νμ©
λλΆλΆμ λ²λ€λ¬λ μ λ°μ΄νΈ νλ‘μΈμ€λ₯Ό μ¬μ©μ μ μν μ μλ HMR APIλ₯Ό μ 곡ν©λλ€. μ΄ APIλ₯Ό νμ©νλ©΄ λͺ¨λ μ λ°μ΄νΈ λ°©μμ λ―ΈμΈ μ‘°μ νκ³ HMR μ±λ₯μ κ°μ ν μ μμ΅λλ€.
a. μ¬μ©μ μ μ μ λ°μ΄νΈ νΈλ€λ¬ ꡬν
νΉμ λͺ¨λμ΄ μ λ°μ΄νΈλλ λ°©μμ μ μ΄νκΈ° μν΄ μ¬μ©μ μ μ μ λ°μ΄νΈ νΈλ€λ¬λ₯Ό ꡬνν©λλ€. μ΄λ₯Ό ν΅ν΄ λ€μν μ νμ λͺ¨λμ λν΄ μ λ°μ΄νΈ νλ‘μΈμ€λ₯Ό μ΅μ νν μ μμ΅λλ€.
b. HMR μ΄λ²€νΈ μ¬μ©
HMR μ΄λ²€νΈλ₯Ό μμ νμ¬ μ λ°μ΄νΈ μ§ν μν©μ μΆμ νκ³ μ μ¬μ μΈ μ±λ₯ λ³λͺ© νμμ μλ³ν©λλ€. μ΄ μ 보λ μ λ°μ΄νΈ νλ‘μΈμ€λ₯Ό λμ± μ΅μ ννλ λ° μ¬μ©ν μ μμ΅λλ€.
6. μμ€ν 리μμ€ μ΅μ ν
κ°λ° νκ²½μ HMR μ λ°μ΄νΈλ₯Ό μ²λ¦¬ν μ μλ μΆ©λΆν μμ€ν 리μμ€κ° μλμ§ νμΈνμμμ€. μ¬κΈ°μλ CPU λ° λ©λͺ¨λ¦¬ μ¬μ©λμ μ΅μ ννλ κ²μ΄ ν¬ν¨λ©λλ€.
a. λ©λͺ¨λ¦¬ ν λΉ λ리기
λ©λͺ¨λ¦¬ κ΄λ ¨ λ¬Έμ κ° λ°μνλ κ²½μ° λ²λ€λ¬μ λν λ©λͺ¨λ¦¬ ν λΉμ λ리λ κ²μ κ³ λ €νμμμ€. μ΄λ κ² νλ©΄ λ²λ€λ¬κ° μ λ°μ΄νΈλ₯Ό λ³΄λ€ ν¨μ¨μ μΌλ‘ μ²λ¦¬ν μ μμ΄ HMR μ±λ₯μ΄ ν₯μλ μ μμ΅λλ€.
b. λΆνμν μ ν리μΌμ΄μ λ«κΈ°
μμ€ν 리μμ€λ₯Ό μλΉνλ λΆνμν μ ν리μΌμ΄μ μ λͺ¨λ λ«μ΅λλ€. μ΄λ κ² νλ©΄ λ²λ€λ¬μ λν 리μμ€κ° ν보λκ³ HMR μ±λ₯μ΄ ν₯μλ©λλ€.
HMR μ±λ₯ μΈ‘μ μ μν λꡬ
HMR μ±λ₯μ μΈ‘μ νκ³ μ μ¬μ μΈ λ³λͺ© νμμ μλ³νλ λ° μ¬μ©ν μ μλ μ¬λ¬ λκ΅¬κ° μμ΅λλ€. μ΄λ¬ν λꡬλ μ λ°μ΄νΈ νλ‘μΈμ€μ λν κ·μ€ν ν΅μ°°λ ₯μ μ 곡νκ³ HMR μ±λ₯μ μ΅μ ννλ λ° λμμ΄ λ©λλ€.
- Webpack Build Analyzer: λΉλ μν°ν©νΈμ ν¬κΈ°μ ꡬμ±μ μκ°ννμ¬ HMR μ±λ₯μ μν₯μ λ―ΈμΉ μ μλ λκ·λͺ¨ λͺ¨λ λλ μ’ μμ±μ μλ³νλ λ° λμμ΄ λλ Webpack νλ¬κ·ΈμΈμ λλ€.
- Chrome DevTools Performance Tab: Chrome DevTools Performance νμ μ¬μ©νμ¬ HMR μ λ°μ΄νΈλ₯Ό νλ‘νμΌλ§νκ³ μ±λ₯ λ³λͺ© νμμ μλ³ν μ μμ΅λλ€.
- λ²λ€λ¬ νΉμ νλ‘νμΌλ§ λꡬ: λλΆλΆμ λ²λ€λ¬λ HMR μ±λ₯μ λΆμνλ λ° μ¬μ©ν μ μλ μ체 νλ‘νμΌλ§ λꡬλ₯Ό μ 곡ν©λλ€.
μ€μ μ¬λ‘ λ° μ¬λ‘ μ°κ΅¬
μ¬λ¬ μ€μ μ¬λ‘ λ° μ¬λ‘ μ°κ΅¬λ HMR μ΅μ νκ° κ°λ° μν¬νλ‘μ°μ λ―ΈμΉλ μν₯μ 보μ¬μ€λλ€.
μμ 1: λκ·λͺ¨ React μ ν리μΌμ΄μ μ΅μ ν
λκ·λͺ¨ React μ ν리μΌμ΄μ μ 볡μ‘ν λͺ¨λ κ·Έλνμ λΉν¨μ¨μ μΈ λ²λ€λ¬ ꡬμ±μΌλ‘ μΈν΄ HMR μ λ°μ΄νΈκ° λλ €μ§λ λ¬Έμ κ° λ°μνμ΅λλ€. μν μ’ μμ±μ μ κ±°νκ³ , μμ€ λ§΅ μμ±μ μ΅μ ννκ³ , HMR APIλ₯Ό νμ©νμ¬ μ λ°μ΄νΈ μ²λ¦¬ μλλ₯Ό 50% μ€μ¬ κ°λ° κ²½νμ ν¬κ² ν₯μμμΌ°μ΅λλ€.
μμ 2: λ κ±°μ νλ‘μ νΈμμ HMR μ±λ₯ ν₯μ
λ§μ μμ μ’ μμ±κ³Ό λΉν¨μ¨μ μΈ μ½λλ₯Ό κ°μ§ λ κ±°μ νλ‘μ νΈλ HMR μ λ°μ΄νΈκ° λ§€μ° λλ €μ§λ λ¬Έμ κ° λ°μνμ΅λλ€. λΆνμν μ’ μμ±μ μ κ±°νκ³ , λͺ¨λμ±μ κ°μ νκΈ° μν΄ μ½λλ₯Ό 리ν©ν°λ§νκ³ , SSDλ‘ μ κ·Έλ μ΄λνμ¬ μ λ°μ΄νΈ μ²λ¦¬ μλλ₯Ό ν¬κ² ν₯μμμΌ νλ‘μ νΈ κ°λ°μ λ³΄λ€ κ΄λ¦¬νκΈ° μ½κ² λ§λ€μμ΅λλ€.
κ²°λ‘
JavaScript λͺ¨λ ν« μ λ°μ΄νΈ(HMR)λ λΉ λ₯Έ λ°λ³΅μ κ°λ₯νκ² νκ³ μ ν리μΌμ΄μ μνλ₯Ό μ μ§νμ¬ κ°λ° κ²½νμ κ°μ νλ λ° μ μ©ν λꡬμ λλ€. κ·Έλ¬λ HMRμ μ±λ₯, νΉν μ λ°μ΄νΈκ° μ²λ¦¬λλ μλλ λ€μν μμΈμ μν₯μ λ°μ μ μμ΅λλ€. μ΄λ¬ν μμΈμ μ΄ν΄νκ³ μ΄ κΈ°μ¬μ μ€λͺ λ μ΅μ ν κΈ°μ μ ꡬνν¨μΌλ‘μ¨ κ°λ°μλ HMR μ±λ₯μ ν¬κ² κ°μ νκ³ λ³΄λ€ μννκ³ ν¨μ¨μ μΈ κ°λ° μν¬νλ‘μ°λ₯Ό λ§λ€ μ μμ΅λλ€. λ²λ€λ¬ κ΅¬μ± μ΅μ ν λ° λͺ¨λ κ·Έλν ν¬κΈ° μΆμμμ HMR API νμ© λ° μμ€ν 리μμ€ μ΅μ νμ μ΄λ₯΄κΈ°κΉμ§ HMR μ λ°μ΄νΈκ° λΉ λ₯΄κ³ ν¨μ¨μ μΌλ‘ μ²λ¦¬λλλ‘ λ³΄μ₯νμ¬ μμ°μ± ν₯μκ³Ό λ³΄λ€ μ¦κ±°μ΄ κ°λ° κ²½νμΌλ‘ μ΄μ΄μ§ μ μλ λ€μν μ λ΅μ μ¬μ©ν μ μμ΅λλ€.
μΉ μ ν리μΌμ΄μ μ 볡μ‘μ±μ΄ κ³μ μ¦κ°ν¨μ λ°λΌ HMR μ±λ₯μ μ΅μ ννλ κ²μ΄ μ μ λ μ€μν΄μ§ κ²μ λλ€. μ΅μ λͺ¨λ² μ¬λ‘μ λν μ 보λ₯Ό μ μ§νκ³ μ¬μ© κ°λ₯ν λꡬμ κΈ°μ μ νμ©ν¨μΌλ‘μ¨ κ°λ°μλ HMRμ΄ κ°λ° μν¬νλ‘μ°μμ κ·μ€ν μμ°μΌλ‘ μ μ§λλλ‘ ν μ μμ΅λλ€.